home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / mint / mint96sb.zoo / src / mem.h < prev    next >
Encoding:
C/C++ Source or Header  |  1992-10-05  |  2.6 KB  |  98 lines

  1. /*
  2. Copyright 1990,1991,1992 Eric R. Smith. All rights reserved.
  3. */
  4.  
  5. #ifndef _mem_h
  6. #define _mem_h
  7.  
  8. #include "file.h"
  9.  
  10. typedef struct memregion {
  11.     long    loc;        /* base of memory region */
  12.     ulong    len;        /* length of memory region */
  13.     ushort    links;        /* number of users of region */
  14.     ushort    mflags;        /* e.g. which map this came from */
  15.     struct memregion *next; /* next region in memory map */
  16. } MEMREGION;
  17.  
  18. /* dummy type for virtual addresses */
  19. typedef struct vaddr {
  20.     char dummy;
  21. } *virtaddr;
  22.  
  23. /* flags for memory regions */
  24. #define M_CORE        0x01    /* region came from core map */
  25. #define M_ALT        0x02    /* region came from alt map */
  26. #define M_SWAP        0x04    /* region came from swap map */
  27. #define M_KER        0x08    /* region came from kernel map */
  28. #define M_MAP        0x0f    /* and with this to pick out map */
  29.  
  30. #define M_SHTEXT    0x10    /* region is a shared text region */
  31. #define M_KEEP        0x0100    /* don't free on process termination */
  32.  
  33. /* structure for shared text regions */
  34.  
  35. typedef struct shtextreg {
  36.     FILEPTR *f;        /* what file did this come from? */
  37.     MEMREGION *text;    /* pointer to shared text region */
  38.     short mtime, mdate;    /* date & time for file */
  39.     struct shtextreg *next;
  40. } SHTEXT;
  41.  
  42. /* structure of exectuable program headers */
  43. typedef struct fileheader {
  44.     short    fmagic;
  45.     long    ftext;
  46.     long    fdata;
  47.     long    fbss;
  48.     long    fsym;
  49.     long    reserved;
  50.     long    flag;
  51.     short    reloc;
  52. } FILEHEAD;
  53.  
  54. #define GEMDOS_MAGIC 0x601a
  55.  
  56. /* flags for curproc->memflags */
  57. /* also used for program headers */
  58. #define F_FASTLOAD    0x01        /* don't zero heap */
  59. #define F_ALTLOAD    0x02        /* OK to load in alternate ram */
  60. #define F_ALTALLOC    0x04        /* OK to malloc from alt. ram */
  61. #define F_RESERVED    0x08        /* reserved for future use */
  62. #define F_MEMFLAGS    0xf0        /* reserved for future use */
  63. #define F_SHTEXT    0x800        /* program's text may be shared */
  64.  
  65. #define F_MINALT    0xf0000000L    /* used to decide which type of RAM to load in */
  66.  
  67. /* flags for Malloc/Mxalloc */
  68. #define F_KEEP        0x4000        /* don't free memory on termination */
  69.  
  70. typedef MEMREGION **MMAP;
  71.  
  72. #ifndef GENMAGIC
  73. extern MMAP core, alt, ker, swap;
  74. #endif
  75.  
  76. /* compilers differ on what "sizeof" returns */
  77. #define SIZEOF        (long)sizeof
  78.  
  79. /* MiNT leaves this much memory for TOS to use
  80.  */
  81. #define TOS_MEM        (8*1024L)
  82.  
  83. /* MiNT tries to keep this much memory available for the kernel and other
  84.  * programs when a program is launched
  85.  */
  86. #define KEEP_MEM    (8*1024L)
  87.  
  88. /*
  89.  * how much memory should be allocated to the kernel?
  90.  */
  91. #define KERNEL_MEM    (24*1024L)
  92.  
  93. /* macro for rounding off region sizes */
  94. #define MASKBITS    0xf
  95. #define ROUND(size) ((size + MASKBITS) & ~MASKBITS)
  96.  
  97. #endif /* _mem_h */
  98.